package edu.xalead.版本一;

import java.util.Scanner;

public class FiveChess {
/*
控制台实现简单五子棋
 */
    public static void main(String[] args) {
        /*
        第一步：棋盘的实现
         */
        char[][] board = new char[10][10];
        for (int i=0;i<board.length;i++){
            for (int j=0;j<board.length;j++){
                board[i][j] = '+';
            }
        }
        /*
        第二步：棋盘的展现
         */
        for (int i=0;i<board.length;i++){
            for (int j=0;j<board.length;j++){
                System.out.print(" "+board[i][j]);
            }
            System.out.println();
        }
        /*
        第三步：白棋先手，白棋用0表示
         */
        int x = 0;//落子的纵坐标 代表行数
        int y = 0;//落子的横坐标 代表列数
        tt:
        while (true) {
            System.out.println("请输入你要落白子的位置：");
            Scanner s = new Scanner(System.in);
            x = s.nextInt();//得到落子的纵坐标
            y = s.nextInt();//得到落子的横坐标
            board[x][y] = '0'; //将白子落在这个位置
            /*
            核心算法 判断五子成龙
             */
            //水平
            int starty = y-4 < 0 ? 0:y-4;
            int endy = y+4 >= board.length ? board.length-1 : y+4 ;
            int num = 0; //作为计数器使用
            for (int i=starty;i<=endy;i++){
                if (board[x][i]=='0'){
                    num++;
                }else {num = 0;}
                if (num==5){
                    System.out.println("白棋获胜"); break tt;
                }
            }
            //竖直
            int startx = x-4 < 0 ? 0:x-4;
            int endx = x+4 >= board.length ? board.length-1 : x+4 ;
            for (int i=startx;i<=endx;i++){
                if (board[i][y]=='0'){
                    num++;
                }else {num = 0;}
                if (num==5){
                    System.out.println("白棋获胜"); break tt;
                }
            }
            //左倾斜

            int leftstartx = x-4 < 0 ? 0:x-4;
            int leftendx = x+4 >= board.length ? board.length-1 : x+4 ;
            int leftstarty = y-4 < 0 ? 0:y-4;
            int leftendy = y+4 >= board.length ? board.length-1 : y+4 ;
            int j=leftstarty;
            for (int i=leftstartx;i<=leftendx;i++){
                if (board[i][j]=='0'){
                        num++;
                    }else{num=0;}
                    if (num==5){
                        System.out.println("白棋获胜"); break tt;
                    }
                    j++;
                }

            //右倾斜
            int rightstartx = x-4 < 0 ? 0:x-4;
            int rightendx = x+4 >= board.length ? board.length-1 : x+4 ;
            int rightstarty =y-4 < 0 ? 0:y-4;;
            int rightendy = y+4 >= board.length ? board.length-1 : y+4 ;
             j=rightendy;
            for (int i=rightstartx;i<=rightendx;i++){
                if (board[i][j]=='0'){
                    num++;
                }else{num=0;}
                if (num==5){
                    System.out.println("白棋获胜"); break tt;
                }
                if (j!=0)j--;
            }
            //棋盘的展现
//            for (int i = 0; i < board.length; i++) {
//                for (int j = 0; j < board.length; j++) {
//                    System.out.print(" " + board[i][j]);
//                }
//                System.out.println();
//            }
//        /*
//        黑棋落子 黑棋用1表示
//         */
//            System.out.println("请输入你要落黑子的位置：");
//            s = new Scanner(System.in);
//            x = s.nextInt();//得到落子的横坐标
//            y = s.nextInt();//得到落子的纵坐标
//            board[x][y] = '1'; //将黑子落在这个位置
//            //棋盘的展现
//            for (int i = 0; i < board.length; i++) {
//                for (int j = 0; j < board.length; j++) {
//                    System.out.print(" " + board[i][j]);
//                }
//                System.out.println();
//            }
        }
    }
}
